class Questoes::PerguntaController < HerancaAdministradorController
  
  layout "application"
  
  def novo
    @pergunta = Questoes::Pergunta.new()
    @pergunta_dificuldades = Questoes::Pergunta::DIFICULDADES.invert.sort{|a,b| a[1]<=>b[1]}
  end
  
  def criar
    @pergunta = Questoes::Pergunta.new(params[:pergunta])
    if @pergunta.validarDados
      @pergunta.criar(params[:assunto][:descricao])
      render :update do |page|
        page.redirect_to(:action => :listar)
      end
    else
      render :update do |page|
        page.select('.erro').each do |div|
          div.hide
        end
        page.select('.noicon1').each do |div|
            div.hide
        end
        @pergunta.errors.each do |atributo, erro|
          page.replace_html("erro_#{atributo}", erro)
          page.show("erro_#{atributo}")
          page.show("noiconid_#{atributo}")
        end
      end
    end
  end
  
  def editar
    if @manutencao
      @pergunta = Questoes::Pergunta.buscarPerguntas(:first, :conditions => {:id => params[:id]})
      if not @pergunta
        flash[:message] = "Pergunta não encontrada."
        redirect_to :action => :listar
      end
      @pergunta_dificuldades = Questoes::Pergunta::DIFICULDADES.invert.sort{|a,b| a[1]<=>b[1]}
      @assunto = @pergunta.assunto
    else
      flash[:message] = "Acione a manutenção."
      redirect_to :action => :listar
    end
  end
  
  def atualizar
    if @manutencao
      @pergunta = Questoes::Pergunta.buscarPerguntas(:first, :conditions => {:id => params[:pergunta][:id]})
      if not @pergunta
        render :update do |page|
          page.replace_html("not_found", "Pergunta não existe")
        end
      else
        @pergunta.attributes = params[:pergunta]
        if @pergunta.validarDados
          @pergunta.atualizar(params[:pergunta], params[:assunto][:descricao])
          render :update do |page|
            page.redirect_to(:action => :listar)
          end
        else
          render :update do |page|
            page.select('.erro').each do |div|
              div.hide
            end
            page.select('.noicon1').each do |div|
                div.hide
            end
            @pergunta.errors.each do |atributo, erro|
              page.replace_html("erro_#{atributo}", erro)
              page.show("erro_#{atributo}")
              page.show("noiconid_#{atributo}")
            end
          end
        end
      end
    else
      flash[:message] = "Acione a manutenção."
      render :update do |page|
        page.redirect_to(:action => :listar)
      end
    end
  end
  
  def listar
    if params[:filtro]
        @perguntas = Questoes::Pergunta.paginate(:page => params[:page], :per_page => 10, :order => 'assunto_id, enunciado', :conditions => ["enunciado LIKE ?", '%' + params[:filtro][:enunciado] + '%'])
        @filtro_params = {}
        @filtro_params[:enunciado] = params[:filtro][:enunciado]
    else        
        @perguntas = Questoes::Pergunta.paginate(:page => params[:page], :per_page => 10, :order => 'assunto_id, enunciado')
    end
    @pergunta_dificuldades = Questoes::Pergunta::DIFICULDADES
  end
  
  def remover
    if @manutencao
      @pergunta = Questoes::Pergunta.buscarPerguntas(params[:id])
      flash[:message] = "Pergunta não encontrada"
      if @pergunta
        if @pergunta.remover
          flash[:message] = "Pergunta removida com sucesso"
        else
          flash[:message] = "Pergunta não pode ser removida"
        end
      end
    else
      flash[:message] = "Acione a manutenção."
    end
    redirect_to :action => :listar
  end
  
  def visualizar
    @pergunta = Questoes::Pergunta.buscarPerguntas(params[:id])
    if not @pergunta
      flash[:message] = "Pergunta não encontrada"
      redirect_to :action => :listar
      return
    end
    @pergunta_dificuldades = Questoes::Pergunta::DIFICULDADES
  end
  
end
